using EnvDTE;

namespace ClassBuilderWizard.Interfaces
{
    public sealed class Parameters
    {
        private string _IDEWizardType;
        private string _ProjectName;
        private ProjectItems _IDEProjectItems;
        private Project _IDEProject;
        private string _ProjectNamespace;
        private string _NewItemName;
        private string _IDEInstallPath;
        private _DTE _IDEApplication;
        private ProjectType _CurrentProjectType;
        private bool _CreateDAL;
        private bool _UseDatabaseNulls;

        /// <summary>
        /// The Wizard Type from Visual Studio.
        /// Will match one of the constants in the namespace EnvDTE.Constants
        /// </summary>
        public string IDEWizardType
        {
            get { return _IDEWizardType; }
            set { _IDEWizardType = value; }
        }
        /// <summary>
        /// The name of the project
        /// </summary>
        public string ProjectName
        {
            get { return _ProjectName; }
            set { _ProjectName = value; }
        }
        /// <summary>
        /// Items in the Visual Studio project
        /// </summary>
        public ProjectItems IDEProjectItems
        {
            get { return _IDEProjectItems; }
            set { _IDEProjectItems = value; }
        }
        /// <summary>
        /// The Visual Studio project
        /// </summary>
        public Project IDEProject
        {
            get { return _IDEProject; }
            set { _IDEProject = value; }
        }
        /// <summary>
        /// The default namespace of the project
        /// </summary>
        public string ProjectNamespace
        {
            get { return _ProjectNamespace; }
            set { _ProjectNamespace = value; }
        }
        /// <summary>
        /// The name of the item the user wants to create
        /// </summary>
        public string NewItemName
        {
            get { return _NewItemName; }
            set { _NewItemName = value; }
        }
        /// <summary>
        /// The path Visual Studio is installed at
        /// </summary>
        public string IDEInstallPath
        {
            get { return _IDEInstallPath; }
            set { _IDEInstallPath = value; }
        }
        /// <summary>
        /// The Visual Studio application object
        /// </summary>
        public _DTE IDEApplication
        {
            get { return _IDEApplication; }
            set { _IDEApplication = value; }
        }
        /// <summary>
        /// The language of the Visual Studio project
        /// </summary>
        public ProjectType CurrentProjectType
        {
            get { return _CurrentProjectType; }
            set { _CurrentProjectType = value; }
        }
        /// <summary>
        /// If true, the plugin should take steps to create the data access layer
        /// </summary>
        public bool CreateDAL
        {
            get { return this._CreateDAL; }
            set { this._CreateDAL = value; }
        }
        /// <summary>
        /// If true, the plugin should preserve null values in the database
        /// </summary>
        public bool UseDatabaseNulls
        {
            get { return this._UseDatabaseNulls; }
            set { this._UseDatabaseNulls = value; }
        }
    }
}
